package adapter;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Map;
import server.ejb.beans.Fluggesellschaft;
import server.ejb.beans.Flugzeug;
import server.ejb.beans.Flugzeugtyp;
import server.ejb.beans.Parkposition;
import server.ejb.beans.StartLandebahn;

public interface IAdapter extends Remote{
	public void registerForCallback(ICallbackClient client) throws RemoteException;
	public void unregisterFromCallback(ICallbackClient client) throws RemoteException;
	public void notifyObservers()throws RemoteException;
	
	//-----
	

    public int createFlugzeug (String bezeichnung, int FluggesellschaftID, int FlugzeugTypID) throws RemoteException;
    public int createFluggesellschaft (String bezeichnung)throws RemoteException;
    public int createFlugzeugtyp (String bezeichnung, int gebuehr)throws RemoteException;
    public int createStartLandebahn(String bezeichnung)throws RemoteException;
    public int createParkposition(String bezeichnung)throws RemoteException;
    
    
    public Flugzeugtyp getFlugzeugtyp (int ID)throws RemoteException;
    public Flugzeug getFlugzeug (int ID)throws RemoteException;
	public Parkposition getParkposition (int ID)throws RemoteException;
	public StartLandebahn getStartLandebahn(int ID) throws RemoteException;
    public Collection<Fluggesellschaft> getFluggesellschaft(String bezeichnung)throws RemoteException;
    public Collection<Flugzeug> getFlugzeug(String bezeichnung)throws RemoteException;
    public Collection<Flugzeugtyp> getFlugzeugtyp(String bezeichnung)throws RemoteException;
    


    public Collection<Flugzeug> getFlugzeuge ()throws RemoteException;
    public Collection<Fluggesellschaft> getFluggesellschaften()throws RemoteException;
    public Collection<StartLandebahn> getStartLandebahnen()throws RemoteException;
    public Collection<Parkposition> getParkpositionen()throws RemoteException;
    
    
    public void setParkpositionOcc(int flugzeugID, int parkpositionID)throws RemoteException;
    public void setParkpositionFree(int flugzeugID, int parkpositionID) throws RemoteException;
    public void startBahnBelegungAndern(int startId, boolean isBahnFree) throws RemoteException;
    public void startEinplanen(int startId, int fluggesellschaftId, int flugzeugId, String sollzeit) throws RemoteException;
    
	public Map<Integer,Boolean> getParkingPositionSensors() throws RemoteException ;	
	public Map<Integer,Boolean> getLandingLaneSensors() throws RemoteException ;

    public void finishStartProcess(int flugzeugId) throws RemoteException ;
}
